# 3.求出每个平台在北美的平均销售业绩，线形图

# 1.求出每个平台总的销售业绩，并绘制出线性图，并做简单的数据分析
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

def topic_2(data: pd.DataFrame):
    """
    绘制每个平台的销售业绩前五名的柱状图。

    Args:
        data (pd.DataFrame): 包含销售数据的DataFrame。

    Returns:
        None
    """
    # 设置绘图风格为ggplot
    plt.style.use("ggplot")

    # 设置中文编码和符号的正常显示
    plt.rcParams['font.family'] = 'sans-serif'
    plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
    plt.rcParams["axes.unicode_minus"] = False

    # 删除重复数据
    data.drop_duplicates(inplace=True)

    # 按平台分组，并计算每个平台的全球销售业绩总和
    Platform_data = data.groupby(by=['Platform'])['Global_Sales'].sum()

    # 按销售业绩降序排序
    Platform_data.sort_values(inplace=True, ascending=False)

    # 获取销售业绩前五名的平台数据
    Platform_data_5 = Platform_data.head(5)

    # 创建图框
    fig = plt.figure(figsize=(10, 6))

    # 绘制柱状图
    plt.bar(x=Platform_data_5.index, height=Platform_data_5.values, width=0.8)

    # 添加标题和坐标轴标签
    plt.title('每个平台总的销售业绩前五名')
    plt.xlabel('平台')
    plt.ylabel('每个平台总的销售业绩')

    # 剔除图框上边界和右边界的刻度
    plt.tick_params(top=False, right=False)

    # 设置x轴刻度自动展现，并且45度倾斜
    plt.xticks(rotation=45, ha='center')

    # 显示图形
    plt.show()

    # 保存图像
    plt.savefig('./static/img/topic_2.jpg')